/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dio.com.controller;

import dio.com.dao.conexao.AcessoGED;
import dio.com.model.bean.Atividade;
import dio.com.model.bean.Empresa;
import dio.com.model.bean.Tipo;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import javax.swing.JOptionPane;

/**
 *
 * @author Diógenes
 */
public class EmpresaController {

    PreparedStatement pstm;
    ResultSet rs;
    String listarEmpresas = "SELECT * FROM `ged-contabli`.`empresa_1` ORDER BY NOME_1";
    String listarEmpresa = "SELECT * FROM `ged-contabli`.`empresa_1` WHERE NOME_1= ?";
    String cadastrarEmpresa = "INSERT INTO `ged-contabli`.`empresa_1` "
            + "(`NOME_1`,`TELEFONE_1`,`EMAIL_1`,`CNPJ_1`,`RUA_1`,`BAIRRO_1`,"
            + "`CIDADE_1`,`TELEFONE1_1`,`IS_1`,`UF_1`,tipo_idTIPO,atividade_idATIVIDADE,CODIGO,NUM_CONTRATO,PIN,PUK) "
            + "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);";
    String alterarEmpresa = "UPDATE `ged-contabli`.`empresa_1` "
            + "SET `NOME_1` = ?,`TELEFONE_1` = ?,`EMAIL_1` = ?,"
            + " `CNPJ_1` = ?,`RUA_1` = ?,`BAIRRO_1` = ?,"
            + " `CIDADE_1` = ?,`TELEFONE1_1` = ?,`IS_1` = ?,`UF_1` = ? ,`tipo_idTIPO` = ?,"
            + " `atividade_idATIVIDADE` = ?,CODIGO = ?,NUM_CONTRATO = ?,PIN = ?,PUK = ?"
            + "WHERE IDEMPRESA_PK_1 = ?";
    String excluirEmpresa = "DELETE FROM `ged-contabli`.`empresa_1` WHERE EMPRESA_1.IDEMPRESA_PK_1 = ?";
    Empresa empresa = new Empresa();

    public List<Empresa> listarEmpresas() {
        List<Empresa> empresas = new ArrayList<Empresa>();
        try {
            AcessoGED mysql = new AcessoGED();
            pstm = mysql.conectar().prepareStatement(listarEmpresas);
            rs = pstm.executeQuery();
            Empresa empresa;
            Atividade atividade;
            Tipo tipo;
            while (rs.next()) {
                empresa = new Empresa();
                atividade = new Atividade();
                tipo= new Tipo();
                empresa.setNome(rs.getString("NOME_1"));
                empresa.setCnpj(rs.getString("CNPJ_1"));
                empresa.setRua(rs.getString("RUA_1"));
                empresa.setTelefone(rs.getString("TELEFONE_1"));
                empresa.setTelefone1(rs.getString("TELEFONE1_1"));
                empresa.setEmail(rs.getString("EMAIL_1"));
                empresa.setBairro(rs.getString("BAIRRO_1"));
                empresa.setCidade(rs.getString("CIDADE_1"));
                empresa.setIs(rs.getString("IS_1"));
                empresa.setUf(rs.getString("UF_1"));
                empresa.setId(rs.getInt("IDEMPRESA_PK_1"));
                atividade.setId(rs.getInt("atividade_idATIVIDADE"));
                tipo.setId(rs.getInt("tipo_idTIPO"));
                empresa.setCodigo(rs.getString("CODIGO"));
                empresa.setNum_contrato(rs.getString("NUM_CONTRATO"));
                empresa.setPin(rs.getString("PIN"));
                empresa.setPuk(rs.getString("PUK"));
                empresa.setAtividade(atividade);
                empresa.setTipo(tipo);
                empresas.add(empresa);
            }
            mysql.desconectar();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return empresas;
    }

    public Empresa listarEmpresa(String nome) {
        try {
            AcessoGED mysql = new AcessoGED();
            pstm = mysql.conectar().prepareStatement(listarEmpresa);
            pstm.setString(1, nome);
            rs = pstm.executeQuery();
            while (rs.next()) {
                empresa.setNome(rs.getString("NOME_1"));
                empresa.setId(rs.getInt("IDEMPRESA_PK_1"));
            }
            mysql.desconectar();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return empresa;
    }

    public boolean cadastrarEmpresa(Empresa empresa) {
        try {
            AcessoGED mysql = new AcessoGED();
            pstm = mysql.conectar().prepareStatement(cadastrarEmpresa);
            pstm.setString(1, empresa.getNome());
            pstm.setString(2, empresa.getTelefone());
            pstm.setString(3, empresa.getEmail());
            pstm.setString(4, empresa.getCnpj());
            pstm.setString(5, empresa.getRua());
            pstm.setString(6, empresa.getBairro());
            pstm.setString(7, empresa.getCidade());
            pstm.setString(8, empresa.getTelefone1());
            pstm.setString(9, empresa.getIs());
            pstm.setString(10, empresa.getUf());
            pstm.setInt(11, empresa.getTipo().getId());
            pstm.setInt(12, empresa.getAtividade().getId());
            pstm.setString(13, empresa.getCodigo());
            pstm.setString(14, empresa.getNum_contrato());
            pstm.setString(15, empresa.getPin());
            pstm.setString(16, empresa.getPuk());
            pstm.executeUpdate();
            mysql.desconectar();
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }

    public void alterarEmpresa(Empresa empresa) {
        try {
            AcessoGED mysql = new AcessoGED();
            pstm = mysql.conectar().prepareStatement(alterarEmpresa);
            pstm.setString(1, empresa.getNome());
            pstm.setString(2, empresa.getTelefone());
            pstm.setString(3, empresa.getEmail());
            pstm.setString(4, empresa.getCnpj());
            pstm.setString(5, empresa.getRua());
            pstm.setString(6, empresa.getBairro());
            pstm.setString(7, empresa.getCidade());
            pstm.setString(8, empresa.getTelefone1());
            pstm.setString(9, empresa.getIs());
            pstm.setString(10, empresa.getUf());
            pstm.setInt(11, empresa.getTipo().getId());
            pstm.setInt(12, empresa.getAtividade().getId());
            pstm.setString(13, empresa.getCodigo());
            pstm.setString(14, empresa.getNum_contrato());
            pstm.setString(15, empresa.getPin());
            pstm.setString(16, empresa.getPuk());
            pstm.setInt(17, empresa.getId());
            pstm.executeUpdate();
            mysql.desconectar();
        } catch (SQLException e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "Erro na alteração do arquivo " + e.getMessage(), "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }

    public void excluirEmpresa(Empresa empresa) {
        try {
            AcessoGED mysql = new AcessoGED();
            pstm = mysql.conectar().prepareStatement(excluirEmpresa);
            pstm.setInt(1, empresa.getId());
            pstm.execute();
            mysql.desconectar();
            JOptionPane.showMessageDialog(null, "Empresa excluida com sucesso");
        } catch (SQLException e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, "Erro na exclusão do arquivo: " + e.getSQLState(), "Erro!", JOptionPane.ERROR_MESSAGE);
        }
    }
}
